package com.ynet.middleground.user.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.BaseReqObj;
import com.ynet.core.common.BaseReqObjPager;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.user.bean.AddChannelReq;
import com.ynet.middleground.user.bean.QueryBaseReq;
import com.ynet.middleground.user.bean.QueryChannelByCodeReq;
import com.ynet.middleground.user.bean.UpdateChannelReq;
import com.ynet.middleground.user.bean.searchAllChannelsReq;
import com.ynet.middleground.user.dto.ChannelDTO;

/**
 * 渠道信息服务
 * 
 * @author liulx
 */
public interface ChannelService {

    /**
     * 查询所有渠道信息
     * 
     * @return 所有渠道列表
     */
    ServiceResult<List<ChannelDTO>> searchAllChannel();

    /**
     * 分页查询渠道
     *
     * @param req 基础参数分页
     * @return 渠道列表
     */
    ServiceResult<List<ChannelDTO>> listPage(@Valid BaseReqObjPager req);

    /**
     * 保存渠道
     *
     * @param req 新增渠道请求对象
     * @return 保存成功后的渠道 id
     */
    ServiceResult<Integer> addChannel(@Valid AddChannelReq req);

    /**
     * 根据渠道 id 查询渠道信息
     *
     * @param req 查询基础对象
     * @return 渠道信息传输对象
     */
    ServiceResult<ChannelDTO> queryDetail(@Valid QueryBaseReq req);

    /**
     * 更新渠道信息
     *
     * @param req 修改渠道信息请求对象
     * @return 结果以 success 字段为准, true 为修改成功， false 为修改失败
     */
    ServiceResult<Object> modify(@Valid UpdateChannelReq req);

    /**
     * 根据渠号查询渠道信息请求对象
     *
     * @param req 根据渠号查询渠道信息请求对象
     * @return 渠道信息传输对象
     */
    ServiceResult<ChannelDTO> queryChannelByCode(@Valid QueryChannelByCodeReq req);

    /**
     * 查询所有渠道信息
     * 
     * @return 所有渠道列表
     */
    ServiceResult<List<ChannelDTO>> searchAllChannels(@Valid searchAllChannelsReq req);

}
